#ifndef LISTAREF
#define LISTAREF


#include <cstdlib>
#include <vector>
#include <iostream>
#include "lista.h"


using namespace std;

class  ListaRefinada{

			public:
				   		 struct Particion{
						 		Double_linked<int> vertices;
						 		bool fragmentada;
						 		Particion** fragAux;

						 		//constructor para una particion vacia
						 	    Particion() : vertices (Double_linked<int>()),
								 fragmentada (false), fragAux (NULL)  {}
						  } ;

						  struct InfoVertex{
						  		 Double_linked<Particion>::Node* miParticion;
								 Double_linked<int>::Node* miNodo;
						  		 bool visitado;

						  		 InfoVertex(): miParticion (NULL), miNodo (NULL),
								   visitado (false) {}


						  };

				   		  //constructor para la lista con una sola particion con n nodos
				   		  ListaRefinada(int);
				   		  ~ListaRefinada();

				   		  //refina en base a los elementos de s

				 		  void refinarDerecha(vector<int> s);
				 		  void refinarIzquierda(vector<int> s);
				 		  void display();
				 		  void displayInfoV(int n);




				   		  Double_linked<Particion> lr;
				   		  InfoVertex* infoVertices;





};



#endif
